From: Florian Müllner Date: Wed, 3 Aug 2022 01:40:40 +0000 (+0200) Subject: status/network: Add NMSection:checked property X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~461^2^2~51 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b0df35babf32afc5ba27b68d58df3127ae8ed6c1;p=gnome-shell.git status/network: Add NMSection:checked property Unsurprisingly, this will become the quick toggles 'checked' state. Equally unsurprising, it is set when at least one item is active. Part-of: --- diff --git a/js/ui/status/network.js b/js/ui/status/network.js index a3a8d8faa..20b44da1c 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1275,6 +1275,11 @@ const NMVpnConnectionItem = GObject.registerClass({ }); const NMSection = GObject.registerClass({ + Properties: { + 'checked': GObject.ParamSpec.boolean('checked', '', '', + GObject.ParamFlags.READWRITE, + false), + }, Signals: { 'activation-failed': {}, 'icon-changed': {}, @@ -1322,6 +1327,11 @@ const NMSection = GObject.registerClass({ (item, i) => (item.visible = i < MAX_VISIBLE_NETWORKS)); } + _updateChecked() { + const [firstActive] = this._getActiveItems(); + this.checked = !!firstActive; + } + _resortItem(item) { const pos = this._itemSorter.upsert(item); this._itemsSection.moveMenuItem(item, pos); @@ -1332,6 +1342,7 @@ const NMSection = GObject.registerClass({ `${this} already has an item for ${key}`); item.connectObject( + 'notify::is-active', () => this._updateChecked(), 'notify::name', () => this._resortItem(item), 'destroy', () => this._removeItem(key), this); @@ -1357,6 +1368,7 @@ const NMSection = GObject.registerClass({ _sync() { this.visible = this._items.size > 0; this._updateItemsVisibility(); + this._updateChecked(); } });